import dayjs from "dayjs"
import { TableColumnCtx } from "element-plus"

/**
 * @description 时间日期转换
 * @description format 字符串随意，如 `YYYY-mm、YYYY-mm-dd`
 * @description format 季度："YYYY-mm-dd HH:MM:SS QQQQ"
 * @description format 星期："YYYY-mm-dd HH:MM:SS WWW"
 * @description format 几周："YYYY-mm-dd HH:MM:SS ZZZ"
 * @description format 季度 + 星期 + 几周："YYYY-mm-dd HH:MM:SS WWW QQQQ ZZZ"
 * @param {Date} date 当前时间，new Date() 格式
 * @param {string} format 需要转换的时间格式字符串
 * @returns 返回拼接后的时间字符串 - 日期不存在，则返回空；日期存在，则进行格式化
 */
export const formatDate = (date: Date, format?: string): string => date ? dayjs(date).format(format ?? "YYYY-MM-DD HH:mm:ss") : ""

/**
 * @description element plus 的时间 Formatter 实现，使用 YYYY-MM-DD HH:mm:ss 格式
 * @param {any} row 行数据
 * @param {TableColumnCtx<any>} column 字段
 * @param {any} cellValue 字段值
 */
export const dateFormatter = (_row: any, _column: TableColumnCtx<any>, cellValue: any): string => cellValue ? formatDate(cellValue) : ""

/**
 * @description 耗时计算
 * @param {number} times 秒数
 * @returns 计算之后的耗时字符串
 */
export const expendTime = (times: number): string => {
  if (!times) {
    return ''
  }

  const seconds = times % 60
  const minutes = (times - seconds) / 60 % 60
  const hours = (times - 60 * minutes - seconds) / 3600
  return `${hours}小时${minutes}分钟${seconds}秒`
}

// 当前日期
export const currentDate = (format = 'YYYY-MM-DD HH:mm:ss') => {
  return dayjs().format(format)
}

// 获取前num天的日期
export const getBeforeDate = (num: number = 0, format = 'YYYY-MM-DD') => {
  return dayjs().subtract(num, 'day').format(format)
}